From: Ian Campbell Date: Thu, 10 Oct 2013 13:36:47 +0000 (+0100) Subject: xen: arm: explicitly map 64 bit release address X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5846 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=56435450bcdb7d667b0eba33469560fddf480929;p=xen.git xen: arm: explicitly map 64 bit release address In case it is outside visible ram. Signed-off-by: Ian Campbell Acked-by: Stefano Stabellini --- diff --git a/xen/arch/arm/arm64/smpboot.c b/xen/arch/arm/arm64/smpboot.c index 8239590739..8696ed6a79 100644 --- a/xen/arch/arm/arm64/smpboot.c +++ b/xen/arch/arm/arm64/smpboot.c @@ -4,6 +4,8 @@ #include #include #include +#include +#include struct smp_enable_ops { int (*prepare_cpu)(int); @@ -14,7 +16,7 @@ static struct smp_enable_ops smp_enable_ops[NR_CPUS]; static int __init smp_spin_table_cpu_up(int cpu) { - paddr_t *release; + paddr_t __iomem *release; if (!cpu_release_addr[cpu]) { @@ -22,12 +24,20 @@ static int __init smp_spin_table_cpu_up(int cpu) return -ENODEV; } - release = __va(cpu_release_addr[cpu]); + release = ioremap_nocache(cpu_release_addr[cpu], 8); + if ( !release ) + { + dprintk(XENLOG_ERR, "CPU%d: Unable to map release address\n", cpu); + return -EFAULT; + } release[0] = __pa(init_secondary); flush_xen_data_tlb_range_va((vaddr_t)release, sizeof(*release)); + iounmap(release); + sev(); + return 0; }